home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Games / SpriteFight 2002 v2.0a1 / QTPlay.c < prev    next >
Encoding:
Text File  |  1996-04-30  |  2.7 KB  |  124 lines  |  [TEXT/SPM ]

  1. // QTPlay.c by Stefan C. Sinclair Copyright © 1995-1996 All rights Reserved
  2.  
  3. #include <Movies.h>
  4. #include "SpriteError.h"
  5. #include "SpriteFile.h"
  6.  
  7. extern CWindowPtr    gWindowP;
  8. extern Boolean gQT;
  9.  
  10. Boolean PlayMyMovie(Str255 myMovieName);
  11. Boolean PlaySpriteMovie(SpriteFileRec    spriteFile);
  12. void MyCenterRect(Rect *srcRect, Rect *dstRect);
  13.  
  14. Boolean PlayMyMovie(Str255 myMovieName)
  15.     Movie        movie;
  16.     OSErr        error;
  17.     short        movieResFile = 0;
  18.     short        movieResID = 0;   
  19.     Str255        movieName;
  20.     Boolean    wasChanged;
  21.     FSSpec        theFSSpec;
  22.     Rect        movieBox;
  23.     
  24.     // is QT disabled?
  25.     if(gQT == FALSE)
  26.         return TRUE;
  27.         
  28.     error = FSMakeFSSpec( 0, 0L, myMovieName, &theFSSpec );
  29.     if(error != noErr)
  30.     {
  31.         DoError(kNoFileSpecForMovie, FALSE);
  32.         return FALSE;
  33.     }
  34.     error = OpenMovieFile( &theFSSpec, &movieResFile, fsRdPerm );
  35.     if(error != noErr)
  36.     {
  37.         DoError(kNoOpenFile, FALSE);
  38.         CloseMovieFile( movieResFile );
  39.         return FALSE;
  40.     }
  41.     error = NewMovieFromFile( &movie, movieResFile, &movieResID,
  42.                 movieName, newMovieActive, &wasChanged );
  43.     if(error != noErr)
  44.     {
  45.         DoError(kNoMovieInFile, FALSE);
  46.         CloseMovieFile( movieResFile );
  47.         return FALSE;
  48.     }
  49.     CloseMovieFile( movieResFile );
  50.     
  51.     GetMovieBox(movie, &movieBox );
  52.     MyCenterRect(&movieBox, &gWindowP->portRect);
  53.     SetMovieBox(movie, &movieBox);
  54.     SetMovieGWorld(movie, gWindowP, nil);
  55.     StartMovie(movie);
  56.     while(!IsMovieDone(movie))
  57.     {
  58.         MoviesTask(movie, 0);
  59.     }
  60.     DisposeMovie(movie);
  61.     
  62.     // Make sure the window is cleaned up!
  63.     InvalRect(&gWindowP->portRect);
  64.     
  65.     return TRUE;
  66. }
  67.  
  68. Boolean PlaySpriteMovie(SpriteFileRec    spriteFile)
  69.     Movie        movie;
  70.     OSErr        error;
  71.     short        movieResFile = 0;
  72.     short        movieResID = 0;   
  73.     Str255        movieName;
  74.     Boolean        wasChanged;
  75.     Rect        movieBox;
  76.     
  77.     // is QT disabled?
  78.     if(gQT == FALSE)
  79.         return TRUE;
  80.     
  81.     error = OpenMovieFile( &spriteFile.sfFile, &movieResFile, fsRdPerm );
  82.     if(error != noErr)
  83.     {
  84.         DoError(kNoOpenFile, FALSE);
  85.         CloseMovieFile( movieResFile );
  86.         return FALSE;
  87.     }
  88.     error = NewMovieFromFile( &movie, movieResFile, &movieResID,
  89.                 movieName, newMovieActive, &wasChanged );
  90.     if(error != noErr)
  91.     {
  92.         DoError(kNoMovieInFile, FALSE);
  93.         CloseMovieFile( movieResFile );
  94.         return FALSE;
  95.     }
  96.     CloseMovieFile( movieResFile );
  97.     
  98.     GetMovieBox(movie, &movieBox );
  99.     MyCenterRect(&movieBox, &gWindowP->portRect);
  100.     SetMovieBox(movie, &movieBox);
  101.     SetMovieGWorld(movie, gWindowP, nil);
  102.     StartMovie(movie);
  103.     while(!IsMovieDone(movie))
  104.     {
  105.         MoviesTask(movie, 0);
  106.     }
  107.     DisposeMovie(movie);
  108.     
  109.     // Make sure the window is cleaned up!
  110.     InvalRect(&gWindowP->portRect);
  111.     
  112.     return TRUE;
  113. }
  114.  
  115. /**** CenterRect ****/
  116. void MyCenterRect(Rect *srcRect, Rect *dstRect)
  117. {
  118.     OffsetRect( srcRect, dstRect->left - srcRect->left,
  119.                 dstRect->top - srcRect->top);
  120.     OffsetRect( srcRect, (dstRect->right - srcRect->right)/2,
  121.                 (dstRect->bottom - srcRect->bottom)/2);
  122. }